基礎Unity-狐狸島
基礎Unity-狐狸島:
DEMO
github連結
(一) 概要:
剛學習Unity時的作品,是一款2D遊戲,主要實現的內容包括:腳色操作、Tilemap、敵人簡易AI、UI介面、音效、燈光以及場景。在實作的過程中,了解如何使用Unity,並且輸出遊戲檔。
(圖一)狐狸島遊戲截圖。
(二) 遊戲玩法
透過WASD來操控腳色移動,收集場上的櫻桃。唯一的難點在於最高處的那顆櫻桃,僅有一次機會可以得到它,最終目標是,走到最後的門,進入下一關。第二關並未製作完成。
(三) 腳色操作
透過給予剛體,提供力量,給予玩家的物件移動的力,從而達到移動的目的。此外,也撰寫一個動畫控制的方法,作為玩家物件面朝哪個方向、跳躍、趴下時的動畫控制。
在跳躍上,設置一個檢測器,以確保玩家在地面,才可以進行跳躍,並限制為二段跳。而在碰觸到敵人時,設置一個擊退效果,以及受傷的動畫。此外,玩家死亡時,將場景重設,重新開始遊戲。
而如果目前玩家動畫為跳躍完的下落,且碰觸到敵人時,則透過OnTriggerEnter2D,將敵人消滅。
1. void Movement()
2. {
3. float horizontalMove = Input.GetAxisRaw("Horizontal");
4. float facedircetion = Input.GetAxisRaw("Horizontal");
5. rb.velocity = new Vector2(horizontalMove*speed, rb.velocity.y);
6. anim.SetFloat("running", Mathf.Abs(facedircetion));
7.
8. //腳色移動
9. if (horizontalMove != 0)
10. {
11. transform.localScale = new Vector3(horizontalMove, 1, 1);
12. }
13.
14. //腳色跳躍
15. Crouch();
16. }
(圖二)基本腳色移動程式碼 ( Sunnyland\Assets\Scripts\Player_Controller.cs) (完整程式碼可在附錄的遊戲檔中取得。以下省略,僅保留程式碼路徑)。
(四) Tilemap
透過Unity內建的Tilemap功能,可以輕鬆地建立一個2D像素化地圖,對於獨立遊戲開發者而言是非常有效益的選擇,因此我也使用了這樣的方式來創建我的地圖。此外,我亦給背景添加了不同的圖層,以達到豐富遊戲介面的效果。
(圖三)使用Tilemap繪製地圖。
(五) 敵人AI
在遊戲中,我給兩種敵人添加了不同的簡易AI。老鷹單純的添加上下移動的指令,至於青蛙則是透過動畫以及代碼的配合,做出了青蛙跳躍的感覺。兩種敵人身上都放有碰撞器,以作為實體,阻擋玩家的前進。而為了將這兩隻敵人限制在一定範圍內,我也放置了兩個空物件,作為他們移動的邊緣。
(圖四)青蛙跳躍的效果。
(六) UI介面
在UI介面上,我添加了左上角的收集數量,以及暫停介面,按鈕的實作。此外,還有對話框的實現。其中的收集數量,則是透過代碼實現實時同步。至於暫停介面,亦添加了調整音效的滑桿。
(圖五、六、七)UI介面展示。
(七) 音效系統
透過掛載Audio Source在玩家物件上,並在程式碼中引用,可以視情況撥放不同的音效。例如:被擊中的音效、背景音樂等
(圖八)Audio Source。
(八) 燈光效果
第二個關卡中,加入光的要素,在Unity中可以使用不同的光源,來為場景提供想要的光影效果,在這個遊戲中,我簡單的添加了幾個點光源,並學習如何在遊戲中使用光源,來增添遊戲的美感。
(圖九)在玩家和火焰物件上的點光源。
(九) 場景
一款遊戲中必須得有不同的場景,作為分別關卡的依據或介面等。在這款遊戲中,簡易的使用了三個場景,一個是遊戲開始介面,透過按鈕,使用已經編寫好的程式,進入第一關。而在第一關最後,則可以透過接觸到門,按下E從而進入第二關。其中包括場景的轉換等。
(圖十)場景設定介面。